/**
 * \file util.c
 * \author Davide Gessa
 * \date 10-12-09
 */
#include <util.h>
#include <task/task.h>
#include <task/message.h>
#include <types.h>
#include <main.h>
#include <video.h>
#include <arch.h>



/**
 * Task di prova 1
 */
int task1(int argc, char **argv)
{
	while(1) video_puts("1");
}


/**
 * Task di prova 2
 */
int task2(int argc, char **argv)
{
	while(1) video_puts("2");
}


/**
 * Visualizza la memoria
 */
void show_used_memory()
{
	video_puts_colored(VIDEO_HI_BLUE_BLACK, "\t-> ");
	printf("used: %dkb (%d%%);  ", mm_get_used_mem(), mm_get_used_mem() * 100 / mm_get_total_mem());
	printf("total: %dkb\n", mm_get_total_mem());
}

/**
 * Visualizza la lista dei messaggi di un task
 * 
 * \param pid task da analizzare
 */
void show_task_message_list(pid_t pid)
{
	if(task_get_from_pid(pid) == NULL) return;
	
	message_t *msg = task_get_from_pid(pid)->msg_start;
	
	
	video_puts_colored(VIDEO_HI_BLUE_BLACK, "\t-> ");
	video_puts("Msg List of ");
	video_putint(pid);
	video_puts("\n");
		
	while(msg != NULL)
	{
		video_puts_colored(VIDEO_HI_BLUE_BLACK, "\t\t-> ");
		video_puts("Msg: ");
		video_puts(msg->data);
		video_puts("\n");
		
		msg = msg->next;
	}
}
